#include <memory> // 智能指针定义于此
#include <iostream>
using namespace std;
int main()
{

    // std::unique_ptr：独占所有权的智能指针，同一时间只能有一个 unique_ptr 指向特定内存
    std::unique_ptr<int> pb;
    {
        std::unique_ptr<int> pa{new int{42}};
        // 禁止复制,不允许拷贝构造函数：两个指针指向同一个资源
        // std::unique_ptr<int> pc{pa}; // 直接报错
        
        // 调用移动构造函数转移所有权
        pb = std::move(pa);
        // cout << *pa << endl; // 直接报错： pa 不再拥有资源
    }
    // pa 超出作用域，资源被释放
    // pb 仍然拥有资源
    cout << *pb << endl;
    return 0;
}
